home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / wemdemo4.zip / INFO / LEMACS.12 (.txt) < prev    next >
GNU Info File  |  1994-09-21  |  51KB  |  880 lines

  1. This is Info file ../info/lemacs, produced by Makeinfo-1.55 from the
  2. input file lemacs.txi.
  3.    This file documents the GNU Emacs editor.
  4.    Copyright (C) 1985, 1986, 1988 Richard M. Stallman.  Copyright (C)
  5. 1991, 1992 Lucid, Inc.
  6.    Permission is granted to make and distribute verbatim copies of this
  7. manual provided the copyright notice and this permission notice are
  8. preserved on all copies.
  9.    Permission is granted to copy and distribute modified versions of
  10. this manual under the conditions for verbatim copying, provided also
  11. that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
  12. General Public License" are included exactly as in the original, and
  13. provided that the entire resulting derived work is distributed under the
  14. terms of a permission notice identical to this one.
  15.    Permission is granted to copy and distribute translations of this
  16. manual into another language, under the above conditions for modified
  17. versions, except that the sections entitled "The GNU Manifesto",
  18. "Distribution" and "GNU General Public License" may be included in a
  19. translation approved by the author instead of in the original English.
  20. File: lemacs,  Node: Sorting,  Next: Shell,  Prev: Narrowing,  Up: Top
  21. Sorting Text
  22. ============
  23.    Emacs provides several commands for sorting text in a buffer.  All
  24. operate on the contents of the region (the text between point and the
  25. mark).  They divide the text of the region into many "sort records",
  26. identify a "sort key" for each record, and then reorder the records
  27. using the order determined by the sort keys.  The records are ordered so
  28. that their keys are in alphabetical order, or, for numeric sorting, in
  29. numeric order.  In alphabetic sorting, all upper case letters `A'
  30. through `Z' come before lower case `a', in accord with the ASCII
  31. character sequence.
  32.    The sort commands differ in how they divide the text into sort
  33. records and in which part of each record they use as the sort key.
  34. Most of the commands make each line a separate sort record, but some
  35. commands use paragraphs or pages as sort records.  Most of the sort
  36. commands use each entire sort record as its own sort key, but some use
  37. only a portion of the record as the sort key.
  38. `M-x sort-lines'
  39.      Divide the region into lines, and sort by comparing the entire
  40.      text of a line.  A prefix argument means sort in descending order.
  41. `M-x sort-paragraphs'
  42.      Divide the region into paragraphs and sort by comparing the entire
  43.      text of a paragraph (except for leading blank lines).  A prefix
  44.      argument means sort in descending order.
  45. `M-x sort-pages'
  46.      Divide the region into pages, and sort by comparing the entire
  47.      text of a page (except for leading blank lines).  A prefix
  48.      argument means sort in descending order.
  49. `M-x sort-fields'
  50.      Divide the region into lines, and sort by comparing the contents of
  51.      one field in each line.  Fields are defined as separated by
  52.      whitespace, so the first run of consecutive non-whitespace
  53.      characters in a line constitutes field 1, the second such run
  54.      constitutes field 2, etc.
  55.      You specify which field to sort by with a numeric argument: 1 to
  56.      sort by field 1, etc.  A negative argument means sort in descending
  57.      order.  Thus, minus 2 means sort by field 2 in reverse-alphabetical
  58.      order.
  59. `M-x sort-numeric-fields'
  60.      Like `M-x sort-fields' except the specified field is converted to
  61.      a number for each line, and the numbers are compared.  `10' comes
  62.      before `2' when considered as text, but after it when considered
  63.      as a number.
  64. `M-x sort-columns'
  65.      Like `M-x sort-fields' except that the text within each line used
  66.      for comparison comes from a fixed range of columns.  An explanation
  67.      is given below.
  68.    For example, if the buffer contains
  69.      On systems where clash detection (locking of files being edited) is
  70.      implemented, Emacs also checks the first time you modify a buffer
  71.      whether the file has changed on disk since it was last visited or
  72.      saved.  If it has, you are asked to confirm that you want to change
  73.      the buffer.
  74. then if you apply `M-x sort-lines' to the entire buffer you get
  75.      On systems where clash detection (locking of files being edited) is
  76.      implemented, Emacs also checks the first time you modify a buffer
  77.      saved.  If it has, you are asked to confirm that you want to change
  78.      the buffer.
  79.      whether the file has changed on disk since it was last visited or
  80. where the upper case `O' comes before all lower case letters.  If you
  81. apply instead `C-u 2 M-x sort-fields' you get
  82.      implemented, Emacs also checks the first time you modify a buffer
  83.      saved.  If it has, you are asked to confirm that you want to change
  84.      the buffer.
  85.      On systems where clash detection (locking of files being edited) is
  86.      whether the file has changed on disk since it was last visited or
  87. where the sort keys were `Emacs', `If', `buffer', `systems' and `the'.
  88.    `M-x sort-columns' requires more explanation.  You specify the
  89. columns by putting point at one of the columns and the mark at the other
  90. column.  Because this means you cannot put point or the mark at the
  91. beginning of the first line to sort, this command uses an unusual
  92. definition of `region': all of the line point is in is considered part
  93. of the region, and so is all of the line the mark is in.
  94.    For example, to sort a table by information found in columns 10 to
  95. 15, you could put the mark on column 10 in the first line of the table,
  96. and point on column 15 in the last line of the table, and then use this
  97. command.  Or you could put the mark on column 15 in the first line and
  98. point on column 10 in the last line.
  99.    This can be thought of as sorting the rectangle specified by point
  100. and the mark, except that the text on each line to the left or right of
  101. the rectangle moves along with the text inside the rectangle.  *Note
  102. Rectangles::.
  103. File: lemacs,  Node: Shell,  Next: Hardcopy,  Prev: Sorting,  Up: Top
  104. Running Shell Commands from Emacs
  105. =================================
  106.    Emacs has commands for passing single command lines to inferior shell
  107. processes; it can also run a shell interactively with input and output
  108. to an Emacs buffer `*shell*'.
  109. `M-!'
  110.      Run a specified shell command line and display the output
  111.      (`shell-command').
  112. `M-|'
  113.      Run a specified shell command line with region contents as input;
  114.      optionally replace the region with the output
  115.      (`shell-command-on-region').
  116. `M-x shell'
  117.      Run a subshell with input and output through an Emacs buffer.  You
  118.      can then give commands interactively.
  119. * Menu:
  120. * Single Shell::         How to run one shell command and return.
  121. * Interactive Shell::    Permanent shell taking input via Emacs.
  122. * Shell Mode::           Special Emacs commands used with permanent shell.
  123. File: lemacs,  Node: Single Shell,  Next: Interactive Shell,  Prev: Shell,  Up: Shell
  124. Single Shell Commands
  125. ---------------------
  126.    `M-!' (`shell-command') reads a line of text using the minibuffer
  127. and creates an inferior shell to execute the line as a command.
  128. Standard input from the command comes from the null device.  If the
  129. shell command produces any output, the output goes to an Emacs buffer
  130. named `*Shell Command Output*', which is displayed in another window
  131. but not selected.  A numeric argument, as in `M-1 M-!', directs this
  132. command to insert any output into the current buffer.  In that case,
  133. point is left before the output and the mark is set after the output.
  134.    `M-|' (`shell-command-on-region') is like `M-!' but passes the
  135. contents of the region as input to the shell command, instead of no
  136. input.  If a numeric argument is used to direct  output to the current
  137. buffer, then the old region is deleted first and the output replaces it
  138. as the contents of the region.
  139.    Both `M-!' and `M-|' use `shell-file-name' to specify the shell to
  140. use.  This variable is initialized based on your `SHELL' environment
  141. variable when you start Emacs.  If the file name does not specify a
  142. directory, the directories in the list `exec-path' are searched; this
  143. list is initialized based on the `PATH' environment variable when you
  144. start Emacs.  You can override either or both of these default
  145. initializations in your `.emacs' file .
  146.    When you use `M-!' and `M-|', Emacs has to wait until the shell
  147. command completes.  You can quit with `C-g'; that terminates the shell
  148. command.
  149. File: lemacs,  Node: Interactive Shell,  Next: Shell Mode,  Prev: Single Shell,  Up: Shell
  150. Interactive Inferior Shell
  151. --------------------------
  152.    To run a subshell interactively with its typescript in an Emacs
  153. buffer, use `M-x shell'.  This creates (or reuses) a buffer named
  154. `*shell*' and runs a subshell with input coming from and output going
  155. to that buffer.  That is to say, any "terminal output" from the subshell
  156. will go into the buffer, advancing point, and any "terminal input" for
  157. the subshell comes from text in the buffer.  To give input to the
  158. subshell, go to the end of the buffer and type the input, terminated by
  159.    Emacs does not wait for the subshell to do anything.  You can switch
  160. windows or buffers and edit them while the shell is waiting, or while
  161. it is running a command.  Output from the subshell waits until Emacs
  162. has time to process it; this happens whenever Emacs is waiting for
  163. keyboard input or for time to elapse.
  164.    To get multiple subshells, change the name of buffer `*shell*' to
  165. something different by using `M-x rename-buffer'.  The next use of `M-x
  166. shell' creates a new buffer `*shell*' with its own subshell.  By
  167. renaming this buffer as well you can create a third one, and so on.
  168. All the subshells run independently and in parallel.
  169.    The file name used to load the subshell is the value of the variable
  170. `explicit-shell-file-name', if that is non-`nil'.  Otherwise, the
  171. environment variable `ESHELL' is used, or the environment variable
  172. `SHELL' if there is no `ESHELL'.  If the file name specified is
  173. relative, the directories in the list `exec-path' are searched (*note
  174. Single Shell Commands: Single Shell.).
  175.    As soon as the subshell is started, it is sent as input the contents
  176. of the file `~/.emacs_SHELLNAME', if that file exists, where SHELLNAME
  177. is the name of the file that the shell was loaded from.  For example,
  178. if you use `csh', the file sent to it is `~/.emacs_csh'.
  179.    `cd', `pushd' and `popd' commands given to the inferior shell are
  180. watched by Emacs so it can keep the `*shell*' buffer's default
  181. directory the same as the shell's working directory.  These commands
  182. are recognized syntactically by examining lines of input that are sent.
  183. If you use aliases for these commands, you can tell Emacs to recognize
  184. them also.  For example, if the value of the variable
  185. `shell-pushd-regexp' matches the beginning of a shell command line,
  186. that line is regarded as a `pushd' command.  Change this variable when
  187. you add aliases for `pushd'.  Likewise, `shell-popd-regexp' and
  188. `shell-cd-regexp' are used to recognize commands with the meaning of
  189. `popd' and `cd'.
  190.    `M-x shell-resync-dirs' queries the shell and resynchronizes Emacs'
  191. idea of what the current directory stack is.  `M-x
  192. shell-dirtrack-toggle' turns directory tracking on and off.
  193.    Emacs keeps a history of the most recent commands you have typed in
  194. the `*shell*' buffer.  If you are at the beginning of a shell command
  195. line and type M-p, the previous shell input is inserted into the buffer
  196. before point.  Immediately typing M-p again deletes that input and
  197. inserts the one before it.  By repeating M-p you can move backward
  198. through your commands until you find one you want to repeat.  You may
  199. then edit the command before typing RET if you wish. M-n moves forward
  200. through the command history, in case you moved backward past the one
  201. you wanted while using M-p.  If you type the first few characters of a
  202. previous command and then type M-p, the most recent shell input
  203. starting with those characters is inserted.  This can be very
  204. convenient when you are repeating a sequence of shell commands.  The
  205. variable `input-ring-size' controls how many commands are saved in your
  206. input history.  The default is 30.
  207. File: lemacs,  Node: Shell Mode,  Prev: Interactive Shell,  Up: Shell
  208. Shell Mode
  209. ----------
  210.    The shell buffer uses Shell mode, which defines several special keys
  211. attached to the `C-c' prefix.  They are chosen to resemble the usual
  212. editing and job control characters present in shells that are not under
  213. Emacs, except that you must type `C-c' first.  Here is a list of the
  214. special key bindings of Shell mode:
  215. `RET'
  216.      At end of buffer send line as input; otherwise, copy current line
  217.      to end of buffer and send it (`send-shell-input').  When a line is
  218.      copied, any text at the beginning of the line that matches the
  219.      variable `shell-prompt-pattern' is left out; this variable's value
  220.      should be a regexp string that matches the prompts that you use in
  221.      your subshell.
  222. `C-c C-d'
  223.      Send end-of-file as input, probably causing the shell or its
  224.      current subjob to finish (`shell-send-eof').
  225. `C-d'
  226.      If point is not at the end of the buffer, delete the next
  227.      character just like most other modes.  If point is at the end of
  228.      the buffer, send end-of-file as input (instead of generating an
  229.      error as in other modes).
  230. `C-c C-u'
  231.      Kill all text that has yet to be sent as input
  232.      (`kill-shell-input').
  233. `C-c C-w'
  234.      Kill a word before point (`backward-kill-word').
  235. `C-c C-c'
  236.      Interrupt the shell or its current subjob if any
  237.      (`interrupt-shell-subjob').
  238. `C-c C-z'
  239.      Stop the shell or its current subjob if any (`stop-shell-subjob').
  240. `C-c C-\'
  241.      Send quit signal to the shell or its current subjob if any
  242.      (`quit-shell-subjob').
  243. `C-c C-o'
  244.      Delete last batch of output from shell (`kill-output-from-shell').
  245. `C-c C-r'
  246.      Scroll top of last batch of output to top of window
  247.      (`show-output-from-shell').
  248. `C-c C-y'
  249.      Copy the previous bunch of shell input, and insert it into the
  250.      buffer before point (`copy-last-shell-input').  No final newline
  251.      is inserted, and the input copied is not resubmitted until you type
  252.      RET.
  253. `M-p'
  254.      Move backward through the input history.  Search for a matching
  255.      command if you have typed the beginning of a command.
  256. `M-n'
  257.      Move forward through the input history.  Useful when you are using
  258.      M-p quickly and go past the desired command.
  259. `TAB'
  260.      Complete the file name preceding point.
  261. File: lemacs,  Node: Hardcopy,  Next: Dissociated Press,  Prev: Shell,  Up: Top
  262. Hardcopy Output
  263. ===============
  264.    The Emacs commands for making hardcopy derive their names from the
  265. Unix commands `print' and `lpr'.
  266. `M-x print-buffer'
  267.      Print hardcopy of current buffer using Unix command `print'
  268.      (`lpr -p').  This command adds page headings containing the file
  269.      name and page number.
  270. `M-x lpr-buffer'
  271.      Print hardcopy of current buffer using Unix command `lpr'.  This
  272.      command does not add page headings.
  273. `M-x print-region'
  274.      Like `print-buffer' but prints only the current region.
  275. `M-x lpr-region'
  276.      Like `lpr-buffer' but prints only the current region.
  277.    All the hardcopy commands pass extra switches to the `lpr' program
  278. based on the value of the variable `lpr-switches'.  Its value should be
  279. a list of strings, each string a switch starting with `-'.  For
  280. example, the value could be `("-Pfoo")' to print on printer `foo'.
  281. File: lemacs,  Node: Dissociated Press,  Next: CONX,  Prev: Hardcopy,  Up: Top
  282. Dissociated Press
  283. =================
  284.    `M-x dissociated-press' is a command for scrambling a file of text
  285. either word by word or character by character.  Starting from a buffer
  286. of straight English, it produces extremely amusing output.  The input
  287. comes from the current Emacs buffer.  Dissociated Press writes its
  288. output in a buffer named `*Dissociation*', and redisplays that buffer
  289. after every couple of lines (approximately) to facilitate reading it.
  290.    `dissociated-press' asks every so often whether to continue
  291. operating.  Answer `n' to stop it.  You can also stop at any time by
  292. typing `C-g'.  The dissociation output remains in the `*Dissociation*'
  293. buffer for you to copy elsewhere if you wish.
  294.    Dissociated Press operates by jumping at random from one point in the
  295. buffer to another.  In order to produce plausible output rather than
  296. gibberish, it insists on a certain amount of overlap between the end of
  297. one run of consecutive words or characters and the start of the next.
  298. That is, if it has just printed out `president' and then decides to
  299. jump to a different point in the file, it might spot the `ent' in
  300. `pentagon' and continue from there, producing `presidentagon'.  Long
  301. sample texts produce the best results.
  302.    A positive argument to `M-x dissociated-press' tells it to operate
  303. character by character, and specifies the number of overlap characters.
  304. A negative argument tells it to operate word by word and specifies the
  305. number of overlap words.  In this mode, whole words are treated as the
  306. elements to be permuted, rather than characters.  No argument is
  307. equivalent to an argument of two.  For your againformation, the output
  308. goes only into the buffer `*Dissociation*'.  The buffer you start with
  309. is not changed.
  310.    Dissociated Press produces nearly the same results as a Markov chain
  311. based on a frequency table constructed from the sample text.  It is,
  312. however, an independent, ignoriginal invention.  Dissociated Press
  313. techniquitously copies several consecutive characters from the sample
  314. between random choices, whereas a Markov chain would choose randomly for
  315. each word or character.  This makes for more plausible sounding results,
  316. and runs faster.
  317.    It is a mustatement that too much use of Dissociated Press can be a
  318. developediment to your real work.  Sometimes to the point of outragedy.
  319. And keep dissociwords out of your documentation, if you want it to be
  320. well userenced and properbose.  Have fun.  Your buggestions are welcome.
  321. File: lemacs,  Node: CONX,  Next: Amusements,  Prev: Dissociated Press,  Up: Top
  322.    Besides producing a file of scrambled text with Dissociated Press,
  323. you can generate random sentences by using CONX.
  324. `M-x conx'
  325.      Generate random sentences in the *conx* buffer.
  326. `M-x conx-buffer'
  327.      Absorb the text in the current buffer into the `conx' database.
  328. `M-x conx-init'
  329.      Forget the current word-frequency tree.
  330. `M-x conx-load'
  331.      Load a `conx' database that has been previously saved with `M-x
  332.      conx-save'.
  333. `M-x conx-region'
  334.      Absorb the text in the current buffer into the conx database.
  335. `M-x conx-save'
  336.      Save the current conx database to a file for future retrieval.
  337.    Copy text from a buffer using `M-x conx-buffer' or `M-x conx-region'
  338. and then type `M-x conx'.  Output is continuously generated until you
  339. type ^G. You can save the `conx' database to a file with `M-x
  340. conx-save', which you can retrieve with `M-x conx-load'.  To clear the
  341. database, use `M-x conx-init'.
  342. File: lemacs,  Node: Amusements,  Next: Emulation,  Prev: CONX,  Up: Top
  343. Other Amusements
  344. ================
  345.    If you are a little bit bored, you can try `M-x hanoi'.  If you are
  346. considerably bored, give it a numeric argument.  If you are very very
  347. bored, try an argument of 9.  Sit back and watch.
  348.    When you are frustrated, try the famous Eliza program.  Just do `M-x
  349. doctor'.  End each input by typing `RET' twice.
  350.    When you are feeling strange, type `M-x yow'.
  351. File: lemacs,  Node: Emulation,  Next: Customization,  Prev: Amusements,  Up: Top
  352. Emulation
  353. =========
  354.    GNU Emacs can be programmed to emulate (more or less) most other
  355. editors.  Standard facilities can emulate these:
  356. EDT (DEC VMS editor)
  357.      Turn on EDT emulation with `M-x edt-emulation-on'.  `M-x
  358.      edt-emulation-off' restores normal Emacs command bindings.
  359.      Most of the EDT emulation commands are keypad keys, and most
  360.      standard Emacs key bindings are still available.  The EDT
  361.      emulation rebindings are done in the global keymap, so there is no
  362.      problem switching buffers or major modes while in EDT emulation.
  363. Gosling Emacs
  364.      Turn on emulation of Gosling Emacs (aka Unipress Emacs) with `M-x
  365.      set-gosmacs-bindings'.  This redefines many keys, mostly on the
  366.      `C-x' and `ESC' prefixes, to work as they do in Gosmacs.  `M-x
  367.      set-gnu-bindings' returns to normal GNU Emacs by rebinding the
  368.      same keys to the definitions they had at the time `M-x
  369.      set-gosmacs-bindings' was done.
  370.      It is also possible to run Mocklisp code written for Gosling Emacs.
  371.      *Note Mocklisp::.
  372. evi (vi emulation in Lucid GNU Emacs)
  373.      In Lucid GNU Emacs, evi is the emulation of vi within Emacs.  By
  374.      default, evi-mode is as close as possible to regular vi.  To start
  375.      evi mode from Emacs, type: `Meta-x evi'.
  376.      If you want be in evi mode whenever you bring up Emacs, include
  377.      this line in your `.emacs' file:
  378.           (setq term-setup-hook 'evi)
  379.      *Note evi Mode:: for more information on evi Mode.
  380. vi (Berkeley Unix editor)
  381.      Turn on vi emulation with `M-x vi-mode'.  This is a major mode
  382.      that replaces the previously established major mode.  All of the
  383.      vi commands that, in real vi, enter "input" mode are programmed in
  384.      the Emacs emulator to return to the previous major mode.  Thus,
  385.      ordinary Emacs serves as vi's "input" mode.
  386.      Because vi emulation works through major modes, it does not work
  387.      to switch buffers during emulation.  Return to normal Emacs first.
  388.      If you plan to use vi emulation much, you probably want to bind a
  389.      key to the `vi-mode' command.
  390. vi (alternate emulator)
  391.      Another vi emulator said to resemble real vi more thoroughly is
  392.      invoked by `M-x vip-mode'.  "Input" mode in this emulator is
  393.      changed from ordinary Emacs so you can use ESC to go back to
  394.      emulated vi command mode.  To get from emulated vi command mode
  395.      back to ordinary Emacs, type `C-z'.
  396.      This emulation does not work through major modes, and it is
  397.      possible to switch buffers in various ways within the emulator.
  398.      It is not so necessary to assign a key to the command `vip-mode' as
  399.      it is with `vi-mode' because terminating insert mode does not use
  400.      it.
  401.      For full information, see the long comment at the beginning of the
  402.      source file, which is `lisp/vip.el' in the Emacs distribution.
  403.    Warning: loading more than one vi emulator at once may cause name
  404. conficts; no one has checked.
  405. * Menu:
  406. * evi Mode:: Brief discussion of evi, the vi Emulation mode within Lucid
  407.              GNU Emacs
  408. File: lemacs,  Node: evi Mode,  Prev: Emulation,  Up: Emulation
  409. Using evi Mode
  410. --------------
  411.    In Lucid GNU Emacs, evi provides vi emulation within Emacs.  By
  412. default, evi-mode is as close as possible to regular vi.  To start evi
  413. mode from Emacs, type: `Meta-x evi' If you want be in evi mode whenever
  414. you bring up Emacs, include this line in your `.emacs' file:
  415.      (setq term-setup-hook 'evi)
  416.    You can find a customization file for evi-mode in `~/.evirc'.  This
  417. file has to contain Lisp code, just like the `.emacs' file, and is
  418. loaded whenever you invoke evi mode.  The file allows you to rebind
  419. keys in evi mode, just as you can in other Emacs modes.
  420.    Note that evi also loads a file of vi commands from `.exrc', just
  421. like vi.
  422.    By default, all Emacs commands are disabled in evi mode.  This
  423. leaves you with only vi commands.  You may customize evi mode to make
  424. certain keybindings accessible.  For example, to enable all emacs
  425. command sequences that begin with `Control-x' or with `Meta', include
  426. the following lines in your `.evirc' file:
  427.      (evi-define-key evi-all-keymaps "\C-x" ctl-x-map)
  428.      (setq evi-meta-prefix-char ?\C-a)
  429.      (evi-define-key evi-all-keymaps "\C-a" esc-map)
  430.    When you are in evi mode, typing `Control-z' stops vi emulation,
  431. leaving you in Emacs.  To get back into evi mode, use `Meta-x evi'
  432. again.  To exit Emacs, use `Control-x Control-c'.
  433.    The file management commands used by vi have been adapted to Emacs.
  434. They have slightly different meanings than the vi commands itself:
  435.      Edit a file in the current window.  With no argument, brings in a
  436.      new copy of the file, if it has been subsequently modified on disk.
  437.      `:e' overrides any complaints about the current buffer being
  438.      modified and discards all modifications.  With a filename
  439.      argument, it edits that file in the current window, using the copy
  440.      already in the editor if it was previously read in.  There is no
  441.      difference between `:e!  filename' and `:e filename'.  As a
  442.      shorthand for editing the most recently accessed buffer not in the
  443.      window, use `:e#'.
  444.      Same as `:e', but edits the file in another window, creating that
  445.      window if necessary.  If used with no filename, this command
  446.      splits the current buffer into two windows.
  447.      Switch to the next file in the buffer list that is not currently
  448.      displayed.  Rotates the current file to the end of the buffer
  449.      list, so the command effectively cycles through all buffers.
  450.      Same as `:n', but switches to another window or creates another
  451.      window and puts the next file into it.
  452.    All `ex' commands that accept filenames as arguments perform file
  453. completion using `Space' or `Tab'.  Completion begins after the space
  454. that separates the command from the filename.
  455.    Many of the `ex' commands are not implemented.  The following
  456. commands are implemented:
  457.      cd, chdir, copy, delete, edit, file, global, map, move, next print,
  458.      put, quit, read, set, source, substitute, tag, write, wq, yank, !, <, >
  459.    The following `ex' options are implemented:
  460.      autoindent, ignorecase, magic, notimeout, shiftwidth, showmatch,
  461.      tabstop, wrapscan
  462. File: lemacs,  Node: Customization,  Next: Quitting,  Prev: Emulation,  Up: Top
  463. Customization
  464. *************
  465.    This chapter talks about various topics relevant to adapting the
  466. behavior of Emacs in minor ways.
  467.    All kinds of customization affect only the particular Emacs job that
  468. you do them in.  They are completely lost when you kill the Emacs job,
  469. and have no effect on other Emacs jobs you may run at the same time or
  470. later.  The only way an Emacs job can affect anything outside of it is
  471. by writing a file; in particular, the only way to make a customization
  472. `permanent' is to put something in your `.emacs' file or other
  473. appropriate file to do the customization in each session.  *Note Init
  474. File::.
  475. * Menu:
  476. * Minor Modes::     Each minor mode is one feature you can turn on
  477.                      independently of any others.
  478. * Variables::       Many Emacs commands examine Emacs variables
  479.                      to decide what to do; by setting variables,
  480.                      you can control their functioning.
  481. * Keyboard Macros:: A keyboard macro records a sequence of keystrokes
  482.                      to be replayed with a single command.
  483. * Key Bindings::    The keymaps say what command each key runs.
  484.                      By changing them, you can "redefine keys".
  485. * Syntax::          The syntax table controls how words and expressions
  486.                      are parsed.
  487. * Init File::       How to write common customizations in the `.emacs'
  488.                      file.
  489. * Audible Bell::    Changing how Emacs sounds the bell.
  490. * Faces::
  491.                     Changing the fonts and colors of a region of text.
  492. File: lemacs,  Node: Minor Modes,  Next: Variables,  Up: Customization
  493. Minor Modes
  494. ===========
  495.    Minor modes are options which you can use or not.  For example, Auto
  496. Fill mode is a minor mode in which SPC breaks lines between words as
  497. you type.  All the minor modes are independent of each other and of the
  498. selected major mode.  Most minor modes inform you in the mode line when
  499. they are on; for example, `Fill' in the mode line means that Auto Fill
  500. mode is on.
  501.    Append `-mode' to the name of a minor mode to get the name of a
  502. command function that turns the mode on or off.  Thus, the command to
  503. enable or disable Auto Fill mode is called `M-x auto-fill-mode'.  These
  504. commands are usually invoked with `M-x', but you can bind keys to them
  505. if you wish.  With no argument, the function turns the mode on if it was
  506. off and off if it was on.  This is known as "toggling".  A positive
  507. argument always turns the mode on, and an explicit zero argument or a
  508. negative argument always turns it off.
  509.    Auto Fill mode allows you to enter filled text without breaking lines
  510. explicitly.  Emacs inserts newlines as necessary to prevent lines from
  511. becoming too long.  *Note Filling::.
  512.    Overwrite mode causes ordinary printing characters to replace
  513. existing text instead of moving it to the right.  For example, if point
  514. is in front of the `B' in `FOOBAR', and you type a `G' in Overwrite
  515. mode, it changes to `FOOGAR', instead of `FOOGBAR'.
  516.    Abbrev mode allows you to define abbreviations that automatically
  517. expand as you type them.  For example, `amd' might expand to `abbrev
  518. mode'.  *Note Abbrevs::, for full information.
  519. File: lemacs,  Node: Variables,  Next: Keyboard Macros,  Prev: Minor Modes,  Up: Customization
  520. Variables
  521. =========
  522.    A "variable" is a Lisp symbol which has a value.  The symbol's name
  523. is also called the name of the variable.  Variable names can contain any
  524. characters, but conventionally they are chosen to be words separated by
  525. hyphens.  A variable can have a documentation string which describes
  526. what kind of value it should have and how the value will be used.
  527.    Lisp allows any variable to have any kind of value, but most
  528. variables that Emacs uses require a value of a certain type.  Often the
  529. value has to be a string, or has to be a number.  Sometimes we say that
  530. a certain feature is turned on if a variable is "non-`nil'," meaning
  531. that if the variable's value is `nil', the feature is off, but the
  532. feature is on for any other value.  The conventional value to turn on
  533. the feature--since you have to pick one particular value when you set
  534. the variable--is `t'.
  535.    Emacs uses many Lisp variables for internal recordkeeping, as any
  536. Lisp program must, but the most interesting variables for you are the
  537. ones that exist for the sake of customization.  Emacs does not
  538. (usually) change the values of these variables; instead, you set the
  539. values, and thereby alter and control the behavior of certain Emacs
  540. commands.  These variables are called "options".  Most options are
  541. documented in this manual, and appear in the Variable Index (*note
  542. Variable Index::.).
  543.    One example of a variable which is an option is `fill-column', which
  544. specifies the position of the right margin (as a number of characters
  545. from the left margin) to be used by the fill commands (*note
  546. Filling::.).
  547. * Menu:
  548. * Examining::           Examining or setting one variable's value.
  549. * Edit Options::        Examining or editing list of all variables' values.
  550. * Locals::              Per-buffer values of variables.
  551. * File Variables::      How files can specify variable values.
  552. File: lemacs,  Node: Examining,  Next: Edit Options,  Prev: Variables,  Up: Variables
  553. Examining and Setting Variables
  554. -------------------------------
  555. `C-h v'
  556. `M-x describe-variable'
  557.      Print the value and documentation of a variable.
  558. `M-x set-variable'
  559.      Change the value of a variable.
  560.    To examine the value of a single variable, use `C-h v'
  561. (`describe-variable'), which reads a variable name using the
  562. minibuffer, with completion.  It prints both the value and the
  563. documentation of the variable.
  564.      C-h v fill-column RET
  565. prints something like
  566.      fill-column's value is 75
  567.      
  568.      Documentation:
  569.      *Column beyond which automatic line-wrapping should happen.
  570.      Automatically becomes local when set in any fashion.
  571. The star at the beginning of the documentation indicates that this
  572. variable is an option.  `C-h v' is not restricted to options; it allows
  573. any variable name.
  574.    If you know which option you want to set, you can use `M-x
  575. set-variable' to set it.  This prompts for the variable name in the
  576. minibuffer (with completion), and then prompts for a Lisp expression
  577. for the new value using the minibuffer a second time.  For example,
  578.      M-x set-variable RET fill-column RET 75 RET
  579. sets `fill-column' to 75, like executing the Lisp expression
  580.      (setq fill-column 75)
  581.    Setting variables in this way, like all means of customizing Emacs
  582. except where explicitly stated, affects only the current Emacs session.
  583. File: lemacs,  Node: Edit Options,  Next: Locals,  Prev: Examining,  Up: Variables
  584. Editing Variable Values
  585. -----------------------
  586. `M-x list-options'
  587.      Display a buffer listing names, values and documentation of all
  588.      options.
  589. `M-x edit-options'
  590.      Change option values by editing a list of options.
  591.    `M-x list-options' displays a list of all Emacs option variables, in
  592. an Emacs buffer named `*List Options*'.  Each option is shown with its
  593. documentation and its current value.  Here is what a portion of it might
  594. look like:
  595.      ;; exec-path:
  596.      ("." "/usr/local/bin" "/usr/ucb" "/bin" "/usr/bin" "/u2/emacs/etc")
  597.      *List of directories to search programs to run in subprocesses.
  598.      Each element is a string (directory name)
  599.      or nil (try the default directory).
  600.      ;;
  601.      ;; fill-column:
  602.      75
  603.      *Column beyond which automatic line-wrapping should happen.
  604.      Automatically becomes local when set in any fashion.
  605.      ;;
  606.    `M-x edit-options' goes one step further and immediately selects the
  607. `*List Options*' buffer; this buffer uses the major mode Options mode,
  608. which provides commands that allow you to point at an option and change
  609. its value:
  610.      Set the variable point is in or near to a new value read using the
  611.      minibuffer.
  612.      Toggle the variable point is in or near: if the value was `nil',
  613.      it becomes `t'; otherwise it becomes `nil'.
  614.      Set the variable point is in or near to `t'.
  615.      Set the variable point is in or near to `nil'.
  616.      Move to the next or previous variable.
  617. File: lemacs,  Node: Locals,  Next: File Variables,  Prev: Edit Options,  Up: Variables
  618. Local Variables
  619. ---------------
  620. `M-x make-local-variable'
  621.      Make a variable have a local value in the current buffer.
  622. `M-x kill-local-variable'
  623.      Make a variable use its global value in the current buffer.
  624. `M-x make-variable-buffer-local'
  625.      Mark a variable so that setting it will make it local to the
  626.      buffer that is current at that time.
  627.    You can make any variable "local" to a specific Emacs buffer.  This
  628. means that the variable's value in that buffer is independent of its
  629. value in other buffers.  A few variables are always local in every
  630. buffer.  All other Emacs variables have a "global" value which is in
  631. effect in all buffers that have not made the variable local.
  632.    Major modes always make the variables they set local to the buffer.
  633. This is why changing major modes in one buffer has no effect on other
  634. buffers.
  635.    `M-x make-local-variable' reads the name of a variable and makes it
  636. local to the current buffer.  Further changes in this buffer will not
  637. affect others, and changes in the global value will not affect this
  638. buffer.
  639.    `M-x make-variable-buffer-local' reads the name of a variable and
  640. changes the future behavior of the variable so that it automatically
  641. becomes local when it is set.  More precisely, once you have marked a
  642. variable in this way, the usual ways of setting the variable will
  643. automatically invoke `make-local-variable' first.  We call such
  644. variables "per-buffer" variables.
  645.    Some important variables have been marked per-buffer already.  They
  646. include `abbrev-mode', `auto-fill-function', `case-fold-search',
  647. `comment-column', `ctl-arrow', `fill-column', `fill-prefix',
  648. `indent-tabs-mode', `left-margin',
  649. `mode-line-format', `overwrite-mode', `selective-display-ellipses',
  650. `selective-display', `tab-width', and `truncate-lines'.  Some other
  651. variables are always local in every buffer, but they are used for
  652. internal purposes.
  653.    Note: the variable `auto-fill-function' was formerly named
  654. `auto-fill-hook'.
  655.    If you want that a variable ceases to be local to the current buffer,
  656. call `M-x kill-local-variable' and provide the name of a variable to
  657. the prompt.  The global value of the variable is again in effect in
  658. this buffer.  Setting the major mode kills all the local variables of
  659. the buffer.
  660.    To set the global value of a variable, regardless of whether the
  661. variable has a local value in the current buffer, you can use the Lisp
  662. function `setq-default'.  It works like `setq'.  If there is a local
  663. value in the current buffer, the local value is not affected by
  664. `setq-default'; thus, the new global value may not be visible until you
  665. switch to another buffer.  For example,
  666.      (setq-default fill-column 75)
  667. `setq-default' is the only way to set the global value of a variable
  668. that has been marked with `make-variable-buffer-local'.
  669.    Programs can look at a variable's default value with `default-value'.
  670. This function takes a symbol as an argument and returns its default
  671. value.  The argument is evaluated; usually you must quote it
  672. explicitly.  For example,
  673.      (default-value 'fill-column)
  674. File: lemacs,  Node: File Variables,  Prev: Locals,  Up: Variables
  675. Local Variables in Files
  676. ------------------------
  677.    A file can contain a "local variables list", which specifies the
  678. values to use for certain Emacs variables when that file is edited.
  679. Visiting the file checks for a local variables list and makes each
  680. variable in the list local to the buffer in which the file is visited,
  681. with the value specified in the file.
  682.    A local variables list goes near the end of the file, in the last
  683. page.  (It is often best to put it on a page by itself.)  The local
  684. variables list starts with a line containing the string `Local
  685. Variables:', and ends with a line containing the string `End:'.  In
  686. between come the variable names and values, one set per line, as
  687. `VARIABLE: VALUE'.  The VALUEs are not evaluated; they are used
  688. literally.
  689.    The line which starts the local variables list does not have to say
  690. just `Local Variables:'.  If there is other text before `Local
  691. Variables:', that text is called the "prefix", and if there is other
  692. text after, that is called the "suffix".  If a prefix or suffix are
  693. present, each entry in the local variables list should have the prefix
  694. before it and the suffix after it.  This includes the `End:' line.  The
  695. prefix and suffix are included to disguise the local variables list as
  696. a comment so the compiler or text formatter  will ignore it.  If you do
  697. not need to disguise the local variables list as a comment in this way,
  698. there is no need to include a prefix or a suffix.
  699.    Two "variable" names are special in a local variables list: a value
  700. for the variable `mode' sets the major mode, and a value for the
  701. variable `eval' is simply evaluated as an expression and the value is
  702. ignored.  These are not real variables; setting them in any other
  703. context does not have the same effect.  If `mode' is used in a local
  704. variables list, it should be the first entry in the list.
  705.    Here is an example of a local variables list:
  706.      ;;; Local Variables: ***
  707.      ;;; mode:lisp ***
  708.      ;;; comment-column:0 ***
  709.      ;;; comment-start: ";;; "  ***
  710.      ;;; comment-end:"***" ***
  711.      ;;; End: ***
  712.    Note that the prefix is `;;; ' and the suffix is ` ***'.  Note also
  713. that comments in the file begin with and end with the same strings.
  714. Presumably the file contains code in a language which is enough like
  715. Lisp for Lisp mode to be useful but in which comments start and end
  716. differently.  The prefix and suffix are used in the local variables
  717. list to make the list appear as several lines of comments when the
  718. compiler or interpreter for that language reads the file.
  719.    The start of the local variables list must be no more than 3000
  720. characters from the end of the file, and must be in the last page if the
  721. file is divided into pages.  Otherwise, Emacs will not notice it is
  722. there.  The purpose is twofold: A stray `Local Variables:' not in the
  723. last page does not confuse Emacs, and Emacs never needs to search a
  724. long file that contains no page markers and has no local variables list.
  725.    You may be tempted to turn on Auto Fill mode with a local variable
  726. list.  That is inappropriate.  Whether you use Auto Fill mode or not is
  727. a matter of personal taste, not a matter of the contents of particular
  728. files.  If you want to use Auto Fill, set up major mode hooks with your
  729. `.emacs' file to turn it on (when appropriate) for you alone (*note
  730. Init File::.).  Don't try to use a local variable list that would
  731. impose your taste on everyone working with the file.
  732.    Lucid GNU Emacs allows you to specify local variables in the first
  733. line of a file, in addition to specifying them in the `Local variables'
  734. section at the end of a file.
  735.    If the first line of a file contains two occurences of ``-*-'', Emacs
  736. uses the information between them to determine what the major mode and
  737. variable settings should be.  For example, these are all legal:
  738.          ;;; -*- mode: emacs-lisp -*-
  739.          ;;; -*- mode: postscript; version-control: never -*-
  740.          ;;; -*- tags-file-name: "/foo/bar/TAGS" -*-
  741.    For historical reasons, the syntax ``-*- modename -*-'' is allowed
  742. as well, for example, you can use:
  743.          ;;; -*- emacs-lisp -*-
  744.    The variable `enable-local-variables' controls the use of local
  745. variables lists in files you visit.  The value can be `t', `nil' or
  746. something else.  A value of `t' means local variables lists are obeyed;
  747. `nil' means they are ignored; anything else means query.
  748.    The command `M-x normal-mode' always obeys local variables lists and
  749. ignores this variable.
  750. File: lemacs,  Node: Keyboard Macros,  Next: Key Bindings,  Prev: Variables,  Up: Customization
  751. Keyboard Macros
  752. ===============
  753.    A "keyboard macro" is a command defined by the user to abbreviate a
  754. sequence of keys.  For example, if you discover that you are about to
  755. type `C-n C-d' forty times, you can speed your work by defining a
  756. keyboard macro to invoke `C-n C-d' and calling it with a repeat count
  757. of forty.
  758. `C-x ('
  759.      Start defining a keyboard macro (`start-kbd-macro').
  760. `C-x )'
  761.      End the definition of a keyboard macro (`end-kbd-macro').
  762. `C-x e'
  763.      Execute the most recent keyboard macro (`call-last-kbd-macro').
  764. `C-u C-x ('
  765.      Re-execute last keyboard macro, then add more keys to its
  766.      definition.
  767. `C-x q'
  768.      When this point is reached during macro execution, ask for
  769.      confirmation (`kbd-macro-query').
  770. `M-x name-last-kbd-macro'
  771.      Give a command name (for the duration of the session) to the most
  772.      recently defined keyboard macro.
  773. `M-x insert-kbd-macro'
  774.      Insert in the buffer a keyboard macro's definition, as Lisp code.
  775.    Keyboard macros differ from other Emacs commands in that they are
  776. written in the Emacs command language rather than in Lisp.  This makes
  777. it easier for the novice to write them, and makes them more convenient
  778. as temporary hacks.  However, the Emacs command language is not powerful
  779. enough as a programming language to be useful for writing anything
  780. general or complex.  For such things, Lisp must be used.
  781.    You define a keyboard macro by executing the commands which are its
  782. definition.  Put differently, as you are defining a keyboard macro, the
  783. definition is being executed for the first time.  This way, you see
  784. what the effects of your commands are, and don't have to figure them
  785. out in your head.  When you are finished, the keyboard macro is defined
  786. and also has been executed once.  You can then execute the same set of
  787. commands again by invoking the macro.
  788. * Menu:
  789. * Basic Kbd Macro::     Defining and running keyboard macros.
  790. * Save Kbd Macro::      Giving keyboard macros names; saving them in files.
  791. * Kbd Macro Query::     Keyboard macros that do different things each use.
  792. File: lemacs,  Node: Basic Kbd Macro,  Next: Save Kbd Macro,  Prev: Keyboard Macros,  Up: Keyboard Macros
  793. Basic Use
  794. ---------
  795.    To start defining a keyboard macro, type `C-x ('
  796. (`start-kbd-macro').  From then on, anything you type continues to be
  797. executed, but also becomes part of the definition of the macro.  `Def'
  798. appears in the mode line to remind you of what is going on.  When you
  799. are finished, the `C-x )' command (`end-kbd-macro') terminates the
  800. definition, without becoming part of it.
  801.    For example
  802.      C-x ( M-f foo C-x )
  803. defines a macro to move forward a word and then insert `foo'.
  804.    You can give `C-x )' a repeat count as an argument, in which case it
  805. repeats the macro that many times right after defining it, but defining
  806. the macro counts as the first repetition (since it is executed as you
  807. define it).  If you give `C-x )' an argument of 4, it executes the
  808. macro immediately 3 additional times.  An argument of zero to `C-x e'
  809. or `C-x )' means repeat the macro indefinitely (until it gets an error
  810. or you type `C-g').
  811.    Once you have defined a macro, you can invoke it again with the `C-x
  812. e' command (`call-last-kbd-macro').  You can give the command a repeat
  813. count numeric argument to execute the macro many times.
  814.    To repeat an operation at regularly spaced places in the text,
  815. define a macro and include as part of the macro the commands to move to
  816. the next place you want to use it.  For example, if you want to change
  817. each line, you should position point at the start of a line, and define
  818. a macro to change that line and leave point at the start of the next
  819. line.  Repeating the macro will then operate on successive lines.
  820.    After you have terminated the definition of a keyboard macro, you
  821. can add to the end of its definition by typing `C-u C-x ('.  This is
  822. equivalent to plain `C-x (' followed by retyping the whole definition
  823. so far.  As a consequence it re-executes the macro as previously
  824. defined.
  825. File: lemacs,  Node: Save Kbd Macro,  Next: Kbd Macro Query,  Prev: Basic Kbd Macro,  Up: Keyboard Macros
  826. Naming and Saving Keyboard Macros
  827. ---------------------------------
  828.    To save a keyboard macro for longer than until you define the next
  829. one, you must give it a name using `M-x name-last-kbd-macro'.  This
  830. reads a name as an argument using the minibuffer and defines that name
  831. to execute the macro.  The macro name is a Lisp symbol, and defining it
  832. in this way makes it a valid command name for calling with `M-x' or for
  833. binding a key to with `global-set-key' (*note Keymaps::.).  If you
  834. specify a name that has a prior definition other than another keyboard
  835. macro, Emacs prints an error message and nothing is changed.
  836.    Once a macro has a command name, you can save its definition in a
  837. file.  You can then use it in another editing session.  First visit the
  838. file you want to save the definition in.  Then use the command
  839.      M-x insert-kbd-macro RET MACRONAME RET
  840. This inserts some Lisp code that, when executed later, will define the
  841. same macro with the same definition it has now.  You need not
  842. understand Lisp code to do this, because `insert-kbd-macro' writes the
  843. Lisp code for you.  Then save the file.  You can load the file with
  844. `load-file' (*note Lisp Libraries::.).  If the file you save in is your
  845. initialization file `~/.emacs' (*note Init File::.) then the macro will
  846. be defined each time you run Emacs.
  847.    If you give `insert-kbd-macro' a prefix argument, it creates
  848. additional Lisp code to record the keys (if any) that you have bound to
  849. the keyboard macro, so that the macro is reassigned the same keys when
  850. you load the file.
  851. File: lemacs,  Node: Kbd Macro Query,  Prev: Save Kbd Macro,  Up: Keyboard Macros
  852. Executing Macros with Variations
  853. --------------------------------
  854.    You can use `C-x q' (`kbd-macro-query'), to get an effect similar to
  855. that of `query-replace'.  The macro asks you  each time whether to make
  856. a change.  When you are defining the macro, type `C-x q' at the point
  857. where you want the query to occur.  During macro definition, the `C-x
  858. q' does nothing, but when you invoke the macro, `C-x q' reads a
  859. character from the terminal to decide whether to continue.
  860.    The special answers to a `C-x q' query are SPC, DEL, `C-d', `C-l'
  861. and `C-r'.  Any other character terminates execution of the keyboard
  862. macro and is then read as a command.  SPC means to continue.  DEL means
  863. to skip the remainder of this repetition of the macro, starting again
  864. from the beginning in the next repetition.  `C-d' means to skip the
  865. remainder of this repetition and cancel further repetition.  `C-l'
  866. redraws the screen and asks you again for a character to specify what
  867. to do.  `C-r' enters a recursive editing level, in which you can
  868. perform editing which is not part of the macro.  When you exit the
  869. recursive edit using `C-M-c', you are asked again how to continue with
  870. the keyboard macro.  If you type a SPC at this time, the rest of the
  871. macro definition is executed.  It is up to you to leave point and the
  872. text in a state such that the rest of the macro will do what you want.
  873.    `C-u C-x q', which is `C-x q' with a numeric argument, performs a
  874. different function.  It enters a recursive edit reading input from the
  875. keyboard, both when you type it during the definition of the macro, and
  876. when it is executed from the macro.  During definition, the editing you
  877. do inside the recursive edit does not become part of the macro.  During
  878. macro execution, the recursive edit gives you a chance to do some
  879. particularized editing.  *Note Recursive Edit::.
  880.